linux的相同点和不同点：

背景不同：
redhat（由Fedora社区商业化，适合作为服务器）
ubuntu（基于debian系统，可以作为服务器，个人操作系统比较合适）

分类：
redhat系：Feddora, readhat, centos(rpm, yum)
ubuntu系：Debian, ubuntu(apt)

内核：
相同

指令：
除去包管理，都相同

包管理：
redhat：
rpm：管理（比apt差一点，在apt后面诞生），解决关系依赖问题复杂，仅仅安装本地文件
yum：是基于rpm的包管理工具，自动解决依赖问题，自动在源服务器上下载

ubuntu：基于deb的apt自动分析依赖，好用

centos是redhat的开源版本。

-------------------------------------------------------------

查看linux的版本型号
uname -a
cat /proc/version
lsb_release -a
getconf LONG_BIT

联网&&配置固定IP（见教程）

用户权限管理
sudo su
su u

工具&&软件安装
sudo apt install yum
wget http://download.oracle.com/otn-pub/java/jdk/8u111-b14/jdk-8u111-linux-x64.tar.gz--2016-11-14 

-------------------------------------------------------------

查看帮助：
type ls
which ls
help ls
ls --help(看参数)
man ls
info ls

man ls | grep "l"

-------------------------------------------------------------

查看命令：
cat,more,less,head,tail
head -5 /etc/passwd

创建文件并且赋予权限
touch for.sh && chmod 775 for.sh


-------------------------------------------------------------

查看进程
ps aux | grep ssh

显示文件属性
ls -al jdk-8u111-linux-x64.tar.gz

统计文件个数
ls | wc -w

文件通配符查找
ls -al file0[1-4]
ls -al file0*

文件正则表达式查找
grep [0-9] file2
文件关键字行数的查找
grep -c a file2

在root把文件的权限改变给u用户
chmod 775 a.sh
chown -R u a.sh
chgrp -R u a.sh

-------------------------------------------------------------

cut grep printf awk sed
行：grep sed
列(字段)：cut awk

cut命令的局限性（空格问题）
df | grep "sda1" | cut -d " " -f 5

awk的优势
df | grep "sda1" | awk '{print $5}'

提取sda1硬盘的使用率
df | grep "sda1" | awk '{print $5}' | cut -d "%" -f 1

2列格式
df | grep "sda1" | awk '{print $1 "\t" $5}'

BEGIN的使用
df | grep "sda1" | awk 'BEGIN {printf"the usage of sda1\n"} {print $1 "\t" $5}'

对比：BEGIN的好处
awk '{FS=":"} {print $1 "\t\t\t" $3}' /etc/passwd
awk 'BEGIN {FS=":"} {print $1 "\t\t\t" $3}' /etc/passwd

BEGIN 和 END 的使用
awk 'BEGIN {printf "begin\n"} BEGIN {FS=":"} {print $1 "\t\t\t" $3} END {printf "end\n"}' /etc/passwd

-------------------------------------------------------------

sed命令

this is a boy.
his name is jack.
he is 12 years old.

对比：
sed -n '2p' file2.txt
sed '2p' file2.txt

可以接受管道符
df | sed -n '4p'

删除
sed '3,4d' file2.txt
sed '2d' file2.txt

插入
sed '2a hello' file2.txt
sed '2i hello' file2.txt

对比：插入
sed '2i hello \ how are you' file2.txt 
sed '2i hello \
> how are you' file2.txt

替换行
sed '2c xxxxxxxxxxxx' file2.txt

替换字符串
sed '3s/12/21/g' file2.txt
sed '2s/jack/tom/g' file2.txt

多个条件替换
sed -e '2s/jack/tom/g ; 3s/12/21/g' file2.txt

-------------------------------------------------------------
排序
sort /etc/passwd

反向排序
sort -r /etc/passwd

按照字段排序
sort -t ":" -k 3,3 /etc/passwd
数字排序
sort -n -t ":" -k 3,3 /etc/passwd
反向
sort -n -r -t ":" -k 3,3 /etc/passwd


统计行数
wc -l /etc/passwd

判断上一条命令是否执行正确
echo $?

-------------------------------------------------------------

在shell脚本中用的判断式
test -e f1.txt
[ -f f1.txt ]

/root是不是一个目录
是yes
否no
多个判断式的判断
[ -d /root ] && echo "yes" || echo "no"
[ ! -f f1.txt -a -f f1.txt ] && echo "yes" || echo "no"
[ ! -f f1.txt -o -f f1.txt ] && echo "yes" || echo "no"

判断2个文件是不是同一个文件
[ f1.txt -ef f2.txt ] && echo "yes" || echo "no"

创建硬链接文件
ln -P f1.txt lnf1.txt
判断硬链接和源文件是不是同一个文件
[ f1.txt -ef lnf1.txt ] && echo "yes" || echo "no"

硬链接测试
echo "hello world" >> f1.txt
cat f1.txt
cat lnf1.txt

查看硬链接的inode节点号是不是一样的
ll -i

变量赋值
name=sc
判断变量是不是为空
[ -z "$name" ] && echo "yes" || echo "no"

判断两个变量是不是相等
a=abc
b=abc
[ '$a'=='$b' ] && echo 'yes' || echo 'no'

man test

aa=23
[ -n "$aa" ] && echo "yes" || echo "no"
[ -z "$aa" -a "$aa" -gt 23 ] && echo "yes" || echo "no"

-------------------------------------------------------------
进程查看
ps aux | grep ssh

任务管理器
top





